package com.honghe.system.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;
import com.honghe.system.domain.SysAttendance;
import com.honghe.system.domain.vo.AttendanceStatsVO;
import org.apache.ibatis.annotations.Param;

/**
 * 员工打卡记录Mapper接口
 * 
 * @author honghe
 */
public interface SysAttendanceMapper
{
    /**
     * 查询员工打卡记录
     * 
     * @param attendanceId 员工打卡记录主键
     * @return 员工打卡记录
     */
    public SysAttendance selectSysAttendanceByAttendanceId(Long attendanceId);

    /**
     * 查询员工打卡记录列表
     * 
     * @param sysAttendance 员工打卡记录
     * @return 员工打卡记录集合
     */
    public List<SysAttendance> selectSysAttendanceList(SysAttendance sysAttendance);
    
    /**
     * 查询今日打卡记录
     * 
     * @param userId 用户ID
     * @param attendanceDate 打卡日期
     * @return 员工打卡记录
     */
    public SysAttendance selectTodayAttendance(@Param("userId") Long userId, @Param("attendanceDate") Date attendanceDate);
    
    /**
     * 查询打卡统计数据
     * 
     * @param sysAttendance 员工打卡记录
     * @return 打卡统计数据
     */
    public AttendanceStatsVO selectAttendanceStats(SysAttendance sysAttendance);
    
    /**
     * 查询打卡图表数据
     * 
     * @param params 查询参数
     * @return 打卡记录列表
     */
    public List<Map<String, Object>> selectAttendanceChartData(Map<String, Object> params);

    /**
     * 新增员工打卡记录
     * 
     * @param sysAttendance 员工打卡记录
     * @return 结果
     */
    public int insertSysAttendance(SysAttendance sysAttendance);

    /**
     * 修改员工打卡记录
     * 
     * @param sysAttendance 员工打卡记录
     * @return 结果
     */
    public int updateSysAttendance(SysAttendance sysAttendance);

    /**
     * 删除员工打卡记录
     * 
     * @param attendanceId 员工打卡记录主键
     * @return 结果
     */
    public int deleteSysAttendanceByAttendanceId(Long attendanceId);

    /**
     * 批量删除员工打卡记录
     * 
     * @param attendanceIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysAttendanceByAttendanceIds(Long[] attendanceIds);
} 